# 编写一个用户认证装饰器
# 基本要求
#   执行每个函数的时候必须先校验身份 eg: kevin 123
# 拔高练习(有点难度)
#   执行被装饰的函数 只要有一次认证成功 那么后续的校验都通过
#   register login transfer withdraw
# 提示:全局变量 记录当前用户是否认证

login_dict = {'kevin': False}


def login_auth(func):
    def auth(*args, **kwargs):
        if login_dict.get('kevin'):
            return func(*args, **kwargs)
        username = input('please input username:').strip()
        password = input('please input password:').strip()
        if username == 'kevin' and password == '123':
            login_dict['kevin'] = True
            print('success login!')
            return func(*args, **kwargs)
        else:
            print('incorrect username or password!')

    return auth


@login_auth
def index():
    print('from index')


@login_auth
def home():
    print('from home')


index()
home()
